package cpsobras.movimento;

import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import cpsobras.movimento_item.Movimento_Item;

public class MovimentoDAOImp implements MovimentoDAO {
	
	private Session session;

	public void setSession(Session session) {
		this.session = session;
	}

	@Override
	public void salvar(Movimento movimento) {
		// TODO Auto-generated method stub
		this.session.save(movimento);
	}

	@Override
	public void atualizar(Movimento movimento) {
		// TODO Auto-generated method stub
		this.session.update(movimento);
	}

	@Override
	public void excluir(Movimento movimento) {
		// TODO Auto-generated method stub
		this.session.delete(movimento);
	}

	@Override
	public Movimento carregar(Integer cod_movimento) {
		// TODO Auto-generated method stub
		return (Movimento) this.session.get(Movimento.class, cod_movimento);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Movimento> listar(Integer cod_obra, Date dataInicio, Date dataFim) {
		// TODO Auto-generated method stub
		Criteria criteria = this.session.createCriteria(Movimento.class);
		
		if(dataInicio != null && dataFim != null){
			criteria.add(Restrictions.between("dat_movime", dataInicio, dataFim));
		}
		
		criteria.add(Restrictions.eq("cod_obra", cod_obra));
		criteria.addOrder(Order.asc("dat_movime"));
		
		return criteria.list();
	}
	
	@Override
	public void salvarItem(Movimento_Item movimento_item){
		this.session.save(movimento_item);
	}

}
